import { createRouter, createWebHistory } from 'vue-router'
import routes from './routes'
import { getToken } from '@/utils/auth'
import useStore from '@/store';


const router = createRouter({
  history: createWebHistory(),
  routes,
})

router.beforeEach(async (to, _, next) => {
  const hasToken = getToken()
  const { usePermissionStore } = useStore()
  console.log(hasToken, 'hasToken')
  
  if (to.path === '/login') next()
  if (hasToken) {
    if (to.path === '/login') next('/')

    const { isGetUserInfo }  = usePermissionStore
    console.log(isGetUserInfo, 'isGetUserInfo');
    // 没有获取权限
    if (isGetUserInfo) {
      next()
    } else {
      await usePermissionStore.fetchAuths()
      // 过滤权限路由
      const routes = await usePermissionStore.buildRoutesAction();
      // 404 路由一定要放在 权限路由后面
      routes.forEach((route) => {
        router.addRoute(route);
      });
      // 不使用 next() 是因为，在执行完 router.addRoute 后，
      // 原本的路由表内还没有添加进去的路由，会 No match
      // replace 使路由从新进入一遍，进行匹配即可
      next({ ...to, replace: true });
    }
  } else {
    next('/login')
  }
}) 

// router.beforeEach(async (to, from, next ) => {
//   const hasToken = getToken()
//   // const { usePermissionStore } = useStore()
//   if (hasToken) {
//     // const { isGetUserInfo }  = usePermissionStore
//     // console.log(isGetUserInfo);
    
//     // 未获取权限
//     // if (!isGetUserInfo) {
//     //   // 获取权限
//     //   await usePermissionStore.fetchAuths()
//     //   // 过滤权限
//     //   const routes = await usePermissionStore.buildRoutesAction()
//     //   console.log(routes, '@-----------------------');
      
//     //   // 添加路由
//     //   routes.forEach((route) => {
//     //     router.addRoute(route)
//     //   })
//     // } else {
//     //   next()
//     // }
//     if (to.path === '/login')  next('/')
//     // next({...to, replace: true})
//   } else {
//     next('/login')
//   }
// })

export default router